A universal serial bus (USB) device typically consists of a USB controller or link layer device that connects to a physical USB cable or receptacle through a physical layer integrated circuit (PHY). Standard USB employs a master/slave architecture for communication between USB devices; however, USB On-The-Go (OTG) is a supplement to the USB 2.0 specification that allows USB devices to act either as a host device (acting as the link master) or a peripheral device (acting as the link slave). USB OTG defines USB devices as either an “A-device” or a “B-device” based on which device supplies power and is initially the host. The A-device supplies power and acts as the host whereas the B-device consumes power and acts as the peripheral. USB OTG adds a fifth pin to the standard USB connector, called the ID pin, that enables a USB device to classify itself based on a resistance seen on the ID pin relative to ground. A USB device that has a grounded ID pin plugged into it acts as an A-device whereas a USB device that has a floating ID pin plugged into it acts as a B-device.
The USB 2.0 specification also contains a USB Battery Charging Specification v1.2 that allows USB controllers to be able to detect USB battery chargers connected to the PHY or to function as an A-device or a B-device. An appendix to the Battery Charging Specification defines an accessory charger adapter (ACA), which is a device that allows a USB device to be attached to both a charger and another USB device simultaneously. However, some existing or legacy USB controllers are not designed to support ACA behavior (i.e., are “ACA-agnostic”) and can misinterpret signals received from the ACA by the PHY via a USB cable socket, which may cause the legacy USB controller to behave improperly for a given set of parameters.